# note 
A simple note management application for the command-line
https://notabug.org/JasKinasis/note

## About:
**note** is a simple shellscript which can be used to create/manage notes in the terminal. 
Unlike more advanced note-taking applications that put notes in databases and deal with tagging etc. note is a little more basic.

## Features:
- Quickly create and view notes using your terminal-based editor of choice - all saved to a fixed location. 
- List, rename and delete notes
- Search for notes containing particular words/patterns
- Text to speech via espeak (requires espeak to be installed if you want to use TTS) 
- Archive/back-up all notes and config-settings as a .tar.gz
- Bash completion to allow tab-completion of filenames for user-created notes
- Configuration script (notesettings) to set optional settings (editor, pager, whether to keep or delete editor backup files)

## Pre-requisites:
There aren't any! 

note should run in any Unix-like terminal based environment that can run bash. 
I've only tested it in bash, but it will probably work in other shells too. 
It definitely works on cygwin under Windows (again, with bash!) - because I use cygwin on Windows PC's at work.

espeak is an optional dependency - it is only required if you want to hear your notes read aloud in a dead, soulless, robotic, brummie voice! 

## Installation:
See [INSTALL.md](./INSTALL.md)


## Usage:
`note`   - Display a list of all notes  
`note filename`   - Open a note called "filename" in the editor - (if the file does not exist it will be created when the file is saved)  
`note -ls` - list notes by size  
`note -la` - list notes alphabetically  
`note -v filename` - view filename in pager  
`note -d file1 file2 ...` delete one or more notes  
`note -r oldfile newfile` rename a note  
`note -R filename` - read file aloud via espeak  
`note --backup` - Backup notes and settings to the users home dir in a file (note-backup-YYYY-MM-DD.tar.gz)  
`note -s word` - Search for notes containing "word" (case insensitive)  
`note -S word` - Search for notes containing "word" (case sensitive)  
`note -h` - display help/usage information  

## Getting help:
note comes with man pages.  
try   
`man note`
or  
`man notesettings`  

## Default settings:
When note is first ran, it silently runs notesettings (note's settings management script) and creates a configuration file.
All of note's defaults can be edited by running notesettings (see man notesettings, or notesettings -h), or by manually editing the config file:
/home/user/.note/settings.cfg

note's default configuration uses the following:

- Editor: Note's default text editor will be the systems default command-line text editor (defined by the environment variable $EDITOR)
Many distros set nano as the default terminal text editor.  But some users might have it set as vi, or vim, or emacs, or ed etc. etc.
And if you are using note on someone elses computer, who doesn't like your favourite text editor, you can always reconfigure note to use YOUR favourite editor (if the owner of the computer you are using has it installed)!

- Pager: Note's default pager is less. Again, you can change it to more, or cat, or w3m, or lynx, or tac (if you want to view your notes backwards, you weirdo!).

- Backup file policy: by default note will delete text editor backup files 
  Setting the editor-backups variable to 1 will cause note to preserve any backup files
  -- IMPORTANT: Note currently only removes vim backup files (e.g. files with a tilde ~ at the end.) 
     I haven't added code to detect and delete backup files from any other editors 


## Where are my notes?
All notes are saved to:
/home/user/.note/notes/

## Rationale
This project was originally intended for my own use. So I could quickly take notes and save them to a centralised location and quickly view them when needed.
As such there were minimal requirements for this. The whole thing is designed to be simple, yet configurable enough for others to be able to use different editors/pagers.

My main motivation for creating note was laziness. I got annoyed with having to type `vim ~/notes/nameofnote` when creating, or opening note files when working in different parts of the file-system.
I also got bored of endlessly typing `ls ~/notes/` to remind myself of the file-names of my existing notes.
I wanted something quicker and easier. I wanted to be able type `note nameofnote` and just know that my note would be created in a predictable location.
And when I want to see a list of my notes, I could just type `note`.
That way, when working in the terminal - I can instantly create or view notes wherever I am in the file-system.
And that's how note began - as a wrapper around vim and less.

Over time, I gradually added some minor bits of functionality that I have found handy.

## What's with the brummie robot voice in the TTS?
The brummie robot TTS functionality was added as a result of a prank that backfired on me a little.  
One afternoon I was messing around with espeak and managed to convince my youngest son that my laptop was talking to him.
Unfortunately, the illusion was a little too convincing. At bedtime, he demanded that my laptop should read him his bed-time story. 
So I quickly fired up note and typed up one of his favourite stories (from memory) while he was getting ready for bed.
At bedtime, I ran the text through espeak while I held the book up to the laptop and turned the pages (how else could it read it?). And he absolutely loved it!

As a result - my laptop ended up reading his bedtime stories for the rest of the month. So I quickly decided to add the TTS functionality to note, to make bedtimes a little easier, heh heh... And I used the brummie voice because it was the voice I used in my original prank..... True story!

## Final Ramblings
If you've read this far - thanks for sticking with me!
Note is not a revolutionary piece of software. It doesn't do anything particularly amazing. It just saves a few key-strokes when you want to quickly make, or retrieve some notes that you have made. It also helps to keep your train of thought whilst working - no more thinking "Where did I save that note?" or "What was that note called again?"
It's been a folly of mine for a number of years. I use it almost every day at home and at work. And I'm finally getting around to sharing it. 
Even if only one person finds it useful - I'll be happy!

From time to time, I may update it to make improvements, fix bugs and/or add additional functionality. But I don't plan to do huge amounts to it. It already does everything I need it to do..... For now! 

## Licenses
All code is licensed under the [GNU GPL3](gpl.md)  
The man pages and all other documentation files (including this .md file) are released under the [GNU FDL v1.3 (GNU Free Documentation Licence)](fdl.md)

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
Free Documentation License".

## Copyright
© 2013-2023 Jason Trunks  
https://notabug.org/JasKinasis/note

